Die SQL-Anweisung INSERT INTO SELECT kopiert Daten aus einer Tabelle und fügt sie in eine andere Tabelle ein.
Die INSERT INTO SELECT-Anweisung erfordert, dass die Datentypen in den Quell- und Zieltabellen übereinstimmen.
Kopiert alle Spalten von einer Tabelle in eine andere:
INSERT INTO table2
SELECT *
FROM table1
WHERE condition
Kopiert nur einige Spalten von einer Tabelle in eine andere:
INSERT INTO table2 (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM table1
WHERE condition
In diesem Tutorial verwenden wir die berühmte Beispieldatenbank „Northwind“.
Nachfolgend finden Sie ein Beispiel aus der Tabelle „Customers“ („Kunden“):
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 5021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 5023 | Mexico |
4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
Und das Beispiel aus der Tabelle „Suppliers“ („Suppliers“):
SupplierID | SupplierName | ContactName | Address | City | PostalCode | Country | Phone |
---|---|---|---|---|---|---|---|
1 | Exotic Liquid | Charlotte Cooper | 49 Gilbert St. | Londona | EC1 4SD | UK | (171) 555-2222 |
2 | New Orleans Cajun Delights | Shelley Burke | P.O. Box 78934 | New Orleans | 70117 | USA | (100) 555-4822 |
3 | Grandma Kelly's Homestead | Regina Murphy | 707 Oxford Rd. | Ann Arbor | 48104 | USA | (313) 555-5735 |
4 | Tokyo Traders | Yoshi Nagase | 9-8 Sekimai Musashino-shi | Tokyo | 100 | Japan | (03) 3555-5011 |
5 | Cooperativa de Quesos 'Las Cabras' | Antonio del Valle Saavedra | Calle del Rosal 4 | Oviedo | 33007 | Spain | (98) 598 76 54 |
Die folgende SQL-Abfrage kopiert „Suppliers“ („Lieferanten“) nach „Customers“ („Kunden“) (Spalten, die nicht mit Daten gefüllt sind, enthalten NULL):
INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country
FROM Suppliers
Eine andere Version der SQL-Abfrage kopiert Daten aus der Tabelle „Lieferanten“ nach „Kunden“ (füllt alle Spalten):
INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
SELECT SupplierName, ContactName, Address, City, PostalCode, Country
FROM Suppliers
Die folgende SQL-Anweisung kopiert nur deutsche Lieferanten in die Tabelle „Kunden“:
INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country
FROM Suppliers
WHERE Country = 'Germany'